From: Alexander Mikhaylenko Date: Sat, 20 Jun 2020 18:44:24 +0000 (+0500) Subject: workspaceAnimation: Group sticky windows and moving window X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~616^2^2~498 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=8eba75993240807c8bf4bbd814b302ad0cfb7432;p=gnome-shell.git workspaceAnimation: Group sticky windows and moving window Since the transitions consists of window clones now, all the clones appear above sticky windows. Clone sticky windows as well, and treat them same as moving window instead. Part-of: --- diff --git a/js/ui/workspaceAnimation.js b/js/ui/workspaceAnimation.js index 4f89da464..a43a42e5c 100644 --- a/js/ui/workspaceAnimation.js +++ b/js/ui/workspaceAnimation.js @@ -37,6 +37,11 @@ class WorkspaceGroup extends Clutter.Actor { const isSticky = window.is_on_all_workspaces() || window === this._movingWindow; + // No workspace means we should show windows that are on all workspaces + if (!this._workspace) + return isSticky; + + // Otherwise only show windows that are (only) on that workspace return !isSticky && window.located_on_workspace(this._workspace); } @@ -155,8 +160,7 @@ var WorkspaceAnimationController = class { const switchData = {}; this._switchData = switchData; - switchData.movingWindowBin = new Clutter.Actor(); - switchData.movingWindow = null; + switchData.stickyGroup = new WorkspaceGroup(null, this.movingWindow); switchData.workspaceGroups = []; switchData.gestureActivated = false; switchData.inProgress = false; @@ -169,7 +173,7 @@ var WorkspaceAnimationController = class { Main.uiGroup.insert_child_above(switchData.backgroundGroup, global.window_group); Main.uiGroup.insert_child_above(switchData.container, switchData.backgroundGroup); - Main.uiGroup.insert_child_above(switchData.movingWindowBin, switchData.container); + Main.uiGroup.insert_child_above(switchData.stickyGroup, switchData.container); let x = 0; let y = 0; @@ -208,38 +212,14 @@ var WorkspaceAnimationController = class { switchData.container.y = -activeGroup.y; else switchData.container.x = -activeGroup.x; - - if (this.movingWindow) { - const windowActor = this.movingWindow.get_compositor_private(); - - switchData.movingWindow = { - windowActor, - parent: windowActor.get_parent(), - }; - - switchData.movingWindow.parent.remove_child(windowActor); - switchData.movingWindowBin.add_child(windowActor); - switchData.movingWindow.windowDestroyId = windowActor.connect('destroy', () => { - switchData.movingWindow = null; - }); - } } _finishWorkspaceSwitch(switchData) { this._switchData = null; - if (switchData.movingWindow) { - const record = switchData.movingWindow; - record.windowActor.disconnect(record.windowDestroyId); - switchData.movingWindowBin.remove_child(record.windowActor); - record.parent.add_child(record.windowActor); - - switchData.movingWindow = null; - } - switchData.backgroundGroup.destroy(); switchData.container.destroy(); - switchData.movingWindowBin.destroy(); + switchData.stickyGroup.destroy(); this.movingWindow = null; }